package main

import (
	"encoding/json"

	"jlpay-sdk-go/pkg/jlpay/demo"
	"jlpay-sdk-go/pkg/jlpay/models/openmerch/change"
	change2 "jlpay-sdk-go/pkg/jlpay/services/openmerch/change"
	"jlpay-sdk-go/pkg/jlpay/utils"
)

// 费率信息变更示例
func rateInfoChangeDemo(changeService *change2.ChangeService) {
	// 构建费率信息列表
	rateInfo := []map[string]interface{}{
		{
			"channel_type": "01",    // 渠道类型：01-银联
			"fee_rate":     "0.006", // 费率：0.6%
			"min_fee":      "1",     // 最低手续费：1分
			"max_fee":      "1000",  // 最高手续费：10元
		},
		{
			"channel_type": "02",    // 渠道类型：02-微信
			"fee_rate":     "0.006", // 费率：0.6%
			"min_fee":      "1",     // 最低手续费：1分
			"max_fee":      "1000",  // 最高手续费：10元
		},
		{
			"channel_type": "03",    // 渠道类型：03-支付宝
			"fee_rate":     "0.006", // 费率：0.6%
			"min_fee":      "1",     // 最低手续费：1分
			"max_fee":      "1000",  // 最高手续费：10元
		},
	}

	// 构建请求参数
	requestData := map[string]interface{}{
		"apply_id":  "b8659ea518d14c99b78b5ad000a0731a",
		"merch_no":  "849584358140108",
		"rate_info": rateInfo,
	}

	request := change.NewRateInfoChangeRequest()
	request.SetRawRequestMap(requestData)

	// 序列化请求数据并打印
	requestJSON, _ := json.Marshal(requestData)
	utils.Debugf("费率信息变更请求数据: %s", string(requestJSON))

	// 发送请求
	response, err := changeService.ChangeRateInfo(request)
	if err != nil {
		utils.Errorf("费率信息变更请求失败: %v", err)
		return
	}

	// 处理响应 - 使用BaseResponse接口的HandleResponse方法
	response.HandleResponse("费率信息变更")
}

func main() {
	// 设置日志级别为info，显示详细的调试信息
	utils.SetLogLevel("info")

	utils.Info("=============================")
	utils.Info("===== 费率信息变更示例 开始 =====")
	utils.Info("=============================")

	// 创建配置对象和变更服务
	config := demo.CreateDemoConfig()
	changeService := change2.NewChangeService(config)

	rateInfoChangeDemo(changeService)

	utils.Info("=============================")
	utils.Info("===== 费率信息变更示例执行完毕 =====")
	utils.Info("=============================")
}
